iTesting软件测试知识分享

[web开发] Flask+Python开发个人博客(五)

开发任意一个博客或者网页,如果不是静态的,你就绕不过一个问题,数据怎么存储?

今天是 [web开发] Flask+Python开发个人博客 第五篇,旧文四篇:
[web开发] Flask+Python开发个人博客(四)
[web开发] Flask+Python开发个人博客(三)
[Web开发] Flask+Python 开发个人博客(二)
[web开发] Flask+Python开发个人博客(一)

开发任意一个博客或者网页,如果不是静态的,你就绕不过一个问题,数据怎么存储? 这个摊开来讲就是一个硕大的工程,今天仅就我的博客为例, 来讲下数据库设计。

我选择SQL Server2008 来存储我的数据, 我们看看都有什么内容要存?
1.有登录和注册模块,那必然要存用户的相关信息 — Members
2.要实现用户发帖和修改,那必须要有权限管理。 — Role, Privilege,RolePrivilege
3.要发布文章,文章必须要管理起来 –Categories, Posts。

再来看下这些表之间的关系:

  1. 用户应该分组,所以Members表和Role表就有对应关系,具体表现为Members表每一个user有对应的RoleID。
  2. 分组不同,权限应该不同,RolePrivilege展示这个不同。
  3. 即使不是管理员用户,他自己发布的文章应该可以修改,删除,即每个用户对自己的文章有绝对权限,那么,文章Posts表应该有用户的Memerid。
  4. 每个文章应该都有一个类别,Posts表格和Categories应该有关联,同时Posts表应该表现这个不同。

根据上述要求,数据库表关应该如下:

最后,附上数据库设计的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
use kevin_forum
go
create table Role(
RoleId int not null IDENTITY(1,1) primary key,
RoleName varchar(50) not null,
Description varchar(100)
)
create table Privilege(
PrivilegeId int not null IDENTITY(1,1) primary key,
PrivilegeName varchar(50) not null,
Description varchar(100)
)
create table RolePrivilege(
RolePrivilegeId int not null primary key,
RoleId int not null foreign key references Role(RoleId),
PrivilegeId int foreign key references Privilege(PrivilegeId)
)
create table Members(
MemberId int not null IDENTITY(1,1) primary key,
UserName varchar(50) unique NOT NULL,
PassWord varchar(50) not null,
RoleId int not null default(2) foreign key references Role(RoleId),
PhoneNumber varchar(50) unique NOT NULL
)
CREATE TABLE [dbo].[Categories](
[CId] [int] IDENTITY(1,1) NOT NULL primary key,
[CName] [varchar](100) NOT NULL,
)
CREATE TABLE [dbo].[Posts](
[PId] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[Title] [varchar](100) NULL,
[Contents] [varchar](max) NULL,
[MemberId] [int] NOT NULL foreign key references Members(MemberId),
[CId] [int] NOT NULL,
[Comments] [varchar](max) NULL,
[InsertTime] [datetime] DEFAULT(getdate()),
[ModifyTime] [datetime] DEFAULT(getdate()),
[ModifyByMemberId] [int] NOT NULL
)
alter table [dbo].[Posts]
add constraint posts_members_conn foreign key(MemberId) references [dbo].[Members](MemberId)
alter table [dbo].[Posts]
add foreign key(CId) references [dbo].[Categories](CId)

如果要了解数据库设计的原则,请自行搜索。

🐶 您的支持将鼓励我继续创作 🐶
-------------评论, 吐槽, 学习交流,请关注微信公众号 iTesting-------------
请关注微信公众号 iTesting wechat
扫码关注,跟作者互动